import axios from 'axios'
import { MessageBox } from 'element-ui'
import router from '@/router'

// 使用自定义配置 创建一个 axios 实例
const instance = axios.create({
  baseURL: '/',
  timeout: 1000 * 20,
  headers: {
    'Content-Type': 'application/json;charset=UTF-8',
    'X-Requested-With': 'XMLHttpRequest',
    'If-Modified-Since': 'Thu, 01 Jun 1970 00:00:00 GMT', // 避免 IE10 返回 304
    'shouldIntercept': true // 若为 false,则不拦截在自己的请求里处理
  }
})

// 添加请求拦截器
instance.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  return config
}, error => {
  // 对错误请求做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
instance.interceptors.response.use(response => {
  // 对响应数据做点什么
  return response
}, error => {
  if (error.message === 'Network Error') {
    MessageBox.alert('网络错误，请检查当前网络状况。', '提示', {
      confirmButtonText: '确定'
    })
  }
  if (error.message === 'timeout of 20000ms exceeded') {
    MessageBox.alert('请求超时', '提示', {
      confirmButtonText: '确定'
    })
  }
  if (error.response && error.response.status === 401) {
    router.push({ name: 'login' })
  }

  return Promise.reject(error)
})

export default instance
